基于条件和顺序的Java 8 Lambda过滤 |
您所在的位置:网站首页 › java 条件 › 基于条件和顺序的Java 8 Lambda过滤 |
我试图根据多个条件对列表进行排序。 1234567891011121314151617181920212223242526272829303132333435class Student{ private int Age; private String className; private String Name; public Student(int age, String className, String name) { Age = age; this.className = className; Name = name; } public int getAge() { return Age; } public void setAge(int age) { Age = age; } public String getClassName() { return className; } public void setClassName(String className) { this.className = className; } public String getName() { return Name; } public void setName(String name) { Name = name; } }现在,如果我有一个列表,请说 123456List students = new ArrayList(); students.add(new Student(24,"A","Smith")); students.add(new Student(24,"A","John")); students.add(new Student(30,"A","John")); students.add(new Student(20,"B","John")); students.add(new Student(24,"B","Prince"));我如何能够获得一个名字不同的最老的学生的名单? 在C#中,通过使用System.Linq GroupB进行比较非常简单,然后将其与select进行比较,然后进行展平,我不太确定如何在Java中实现相同的目标。 相关讨论 students.stream().collect(groupingBy(...))。 您是否只想要最旧的列表? 请告诉我们期望的结果是什么。 IE。地图/列表/外观如何。使用toMap收集器: 12345Collection values = students.stream() .collect(toMap(Student::getName, Function.identity(), BinaryOperator.maxBy(Comparator.comparingInt(Student::getAge)))) .values();说明 我们正在使用toMap的重载: 123toMapa€?(Function |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |